Mirrors are servers that replicate data that is present on an original or primary server. The use of mirror servers decreases the demand on the primary server and enables the service of more requests for the data being provided by the primary server. Mirrors can be set up to move data closer to a set of intended recipients such as setting up a mirror on a local network to provide data that is on a primary server on a distant remote network. The data provided by mirrors is a full replication of the data available on the primary server. This requires that the full set of data provided by a primary server be copied over to the mirror.
The data on the primary server is likely to change over time. These changes necessitate that the mirrors be periodically updated. The updating of the mirrors is accomplished by either broadcasting a full set of data or all changes to the data to each mirror in response to any change in the data on a primary server or by each mirror requesting this data at regular intervals from the primary server. This results in a bottle neck at the primary server, especially, if there are a large number of mirrors. It is difficult for each of the mirrors to obtain the data that is necessary to completely update their local data to match that which is available on the primary server. As a result, many of the mirrors are never or seldom completely up to date.
There are other services that offer similar functionality to mirrors such as caching proxies. Caching proxies track requested data for a primary server. However the caching proxies do not replicate the directory structure of the primary server. This limits their ability to support more than one protocol. A caching proxy for an FTP site will only be able to service FTP requests. The data that is available at the caching proxy cannot be accessed through other types of protocols such as NFS, HTTP or other protocols. Another system that is similar to a mirror system is a global file system. A global file system shares a file system across the network using a dedicated protocol and a requisite storage scheme. Data in this system is not accessible by other protocols or storage systems.